package 其他.充分发挥GPU算力;

import java.util.Scanner;

/**
 * 题目描述：
 *
 * 为了充分发挥GPU算力，需要尽可能多的将任务交给GPU执行。
 * 现在有一个任务数组，数组元素表示在这1s内新增的任务个数，且每秒都有新增任务。
 * 假设GPU最多一次执行n个任务，一次执行耗时1s，在保证GPU不空闲的情况下，最少需要多长时间执行完成。
 *
 * 输入描述：
 *
 * 第一个参数为GPU最多执行的任务个数，取值范围1~10000
 * 第二个参数为任务数组的长度，取值范围1~10000
 * 第三个参数为任务数组，数字范围1~10000
 *
 * 输出描述：
 *
 * 执行完所有任务需要多少秒
 */
public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        //1. 一次GPU 可以处理的任务个数, 一次耗费1S 钟
        int max = scanner.nextInt();
        //2. 数组长度
        int i = scanner.nextInt();

        scanner.nextLine();// 读取多余的换行符
        //3. 读取任务队列的数字
        String s = scanner.nextLine();
        //4. 获取任务数组
        String[] str = s.split(" ");
        //5. 把任务队列中的字符转数字队列
         int[] array = new int[str.length];
        for (int j = 0; j < str.length; j++) {
            array[j]=Integer.parseInt(str[j]);
        }

        //6. 申请一个新的变量用来装这个多余的任务, 到最后在一起交给GPU来执行
        int extra = 0;
        if(array.length==0){
            System.out.println(0);
            return;
        }

        for (int k = 0; k < array.length; k++) {
            //这里之所以 从0 和结果作比较, 因为可能会有出现相减得 负数的情况, 所以需要 这样做
            extra=Math.max((extra+array[k]-max),0);
        }
        //7. 对多余部分进行一个处理
        int total=array.length;
        while (extra>0){
            extra=extra-max;
            total++;
        }

        System.out.println(total);

    }
}
